#include "wxscalendarctrl.h"
#include <wx/calctrl.h>

namespace {
  wxsRegisterItem<wxsCalendarCtrl> Reg( _T( "CalendarCtrl" ), _T( "日历控件" ), wxsTWidget, _T( "对话框" ), 150 );
  WXS_ST_BEGIN( wxsCalendarCtrlStyles, _T( "" ) )
  WXS_ST_CATEGORY( "wxCalendarCtrl" )
  WXS_ST( wxCAL_SUNDAY_FIRST )
  WXS_ST( wxCAL_MONDAY_FIRST )
  WXS_ST( wxCAL_SHOW_HOLIDAYS )
  WXS_ST( wxCAL_NO_YEAR_CHANGE )
  WXS_ST( wxCAL_NO_MONTH_CHANGE )
  WXS_ST( wxCAL_SHOW_SURROUNDING_WEEKS )
  WXS_ST( wxCAL_SEQUENTIAL_MONTH_SELECTION )
  WXS_ST_DEFAULTS()
  WXS_ST_END()
  WXS_EV_BEGIN( wxsCalendarCtrlEvents )
  WXS_EVI( EVT_CALENDAR_SEL_CHANGED, wxEVT_CALENDAR_SEL_CHANGED, wxCalendarEvent, Changed )
  WXS_EVI( EVT_CALENDAR_DAY, wxEVT_CALENDAR_DAY_CHANGED, wxCalendarEvent, DayChanged )
  WXS_EVI( EVT_CALENDAR_MONTH, wxEVT_CALENDAR_MONTH_CHANGED, wxCalendarEvent, MonthChanged )
  WXS_EVI( EVT_CALENDAR_YEAR, wxEVT_CALENDAR_YEAR_CHANGED, wxCalendarEvent, YearChanged )
  WXS_EVI( EVT_CALENDAR, wxEVT_CALENDAR_DOUBLECLICKED, wxCalendarEvent, DblClicked )
  WXS_EVI( EVT_CALENDAR_WEEKDAY_CLICKED, wxEVT_CALENDAR_WEEKDAY_CLICKED, wxCalendarEvent, WeekdayClicked )
  WXS_EV_END()
}

wxsCalendarCtrl::wxsCalendarCtrl( wxsItemResData* Data ):
  wxsWidget( Data, &Reg.Info, wxsCalendarCtrlEvents, wxsCalendarCtrlStyles ) {}

void wxsCalendarCtrl::OnBuildCreatingCode() {
  switch( GetLanguage() ) {
  case wxsCPP: {
    AddHeader( _T( "<wx/calctrl.h>" ), GetInfo().ClassName, 0 );
    AddHeader( _T( "<wx/calctrl.h>" ), _T( "wxCalendarEvent" ), 0 );
    Codef( _T( "%C(%W, %I, wxDefaultDateTime, %P, %S, %T, %N);\n" ) );
    BuildSetupWindowCode();
    return;
  }
  case wxsUnknownLanguage:
  default: {
    wxsCodeMarks::Unknown( _T( "wxsCalendarCtrl::OnBuildCreatingCode" ), GetLanguage() );
  }
  }
}

wxObject* wxsCalendarCtrl::OnBuildPreview( wxWindow* Parent, long Flags ) {
  wxCalendarCtrl* Preview = new wxCalendarCtrl( Parent, GetId(), wxDefaultDateTime, Pos( Parent ), Size( Parent ), Style() );
  return SetupWindow( Preview, Flags );
}

void wxsCalendarCtrl::OnEnumWidgetProperties( M_Code_unused long Flags ) {
}
